VFH (Viewpoint Feature Histogram)
1. 서론
3차원 객체 인식 및 자세 추정은 로보틱스, 자율 주행, 증강 현실 등 다양한 분야의 핵심 기술이다. 이러한 기술의 성공은 3차원 포인트 클라우드 데이터를 효과적으로 표현하고 기술(describe)하는 능력에 크게 좌우된다. 수많은 3D 기술자(descriptor) 중에서, Rusu 등에 의해 2010년에 제안된 VFH(Viewpoint Feature Histogram)는 전체 객체 클러스터에 대한 형상과 시점 정보를 단일 서명(signature)으로 압축하여 빠른 인식과 6자유도(6DOF) 자세 추정을 가능하게 하는 독창적인 접근법으로 주목받았다.
본 안내서는 VFH의 근본적인 개념과 설계 철학에서부터 시작하여, 그 수학적 계산 과정을 단계별로 상세히 분석한다. 또한, 실제 적용 환경에서 나타나는 VFH의 성능 특성, 즉 강점과 본질적인 한계를 심층적으로 고찰한다. 이를 통해 VFH가 왜 특정 응용 분야에서는 효과적이지만 다른 분야에서는 한계를 보이는지 명확히 밝힌다. 나아가, VFH를 FPFH, SHOT과 같은 주요 3D 기술자들과 비교 분석하고, VFH의 한계를 극복하기 위해 등장한 CVFH 및 OUR-CVFH로의 진화 과정을 추적한다. 마지막으로, Point Cloud Library(PCL)를 활용하여 VFH 기반의 객체 인식 파이프라인을 구축하는 실용적인 방법을 제시함으로써, 이론과 실제 응용 사이의 간극을 메우고자 한다.
2. VFH(Viewpoint Feature Histogram)의 개념과 설계 철학
2.1 VFH의 정의 및 목적
VFH(Viewpoint Feature Histogram)는 3차원 포인트 클러스터에 대한 강력한 “메타-로컬(meta-local)” 기술자로서, 주요 목적은 객체 인식(Object Recognition)과 6자유도(6DOF) 자세 추정(Pose Estimation)이다.1 VFH의 핵심은 단일 기술자 안에 대상 객체 클러스터의 기하학적 형상(geometry)과 관찰 시점(viewpoint) 정보를 동시에 인코딩하는 것이다.3 이는 단순히 객체를 식별하는 것을 넘어, 로봇 팔이 물체를 집는 등의 상호작용을 위해 필요한 “어디에, 어떤 방향으로” 있는지를 알려주는 것을 목표로 한다.
여기서 ’메타-로컬’이라는 용어는 VFH의 작동 범위를 명확히 한다. VFH는 장면(scene) 전체에 대해 계산되는 순수한 전역(global) 기술자와는 다르다.5 대신, VFH는 사전에 어떤 방식으로든 분할(segmentation)된 개별 포인트 클러스터에 대해 작동한다.7 즉, VFH는 전체 장면이 아닌 특정 객체 클러스터의 형상을 전역적으로 기술한다. 이러한 설계는 VFH의 성능이 전처리 단계인 분할의 품질에 강하게 의존하게 만드는 근본적인 특성을 낳는다. 만약 객체가 주변의 잡음(clutter)으로부터 명확하게 분리되지 못하면, VFH 기술자의 신뢰성은 급격히 저하된다. 따라서 VFH는 궁극적인 인식 도구라기보다는, 주어진 클러스터가 데이터베이스에 저장된 모델 중 어떤 것일 가능성이 높은지에 대한 후보군과 그 자세를 신속하게 제공하는 메커니즘으로 이해해야 한다.1
2.2 설계 철학: FPFH의 진화
VFH의 이론적 기반은 FPFH(Fast Point Feature Histogram)에 깊이 뿌리내리고 있다.2 FPFH는 한 점과 그 주변 이웃 점들 간의 기하학적 관계를 히스토그램으로 표현하는 지역(local) 기술자이다. FPFH는 계산이 빠르고 객체의 회전에 대해 불변성(rotationally invariant)을 가지는 강력한 특징을 가지고 있어, 주로 포인트 클라우드 정합(registration)과 같은 작업에 널리 사용된다.9 하지만 FPFH의 장점인 회전 불변성은 동시에 시점 불변성(viewpoint invariant)을 의미하기도 한다. 이는 객체를 어느 방향에서 바라보아도 동일한 FPFH 값을 생성하므로, 객체의 자세를 구분할 수 없다는 한계를 가진다.3
VFH의 설계자들은 이러한 FPFH의 한계를 극복하고자 의도적인 설계적 절충을 선택했다. 즉, FPFH의 시점 불변성을 포기하는 대신, 객체의 6DOF 자세 정보를 얻기 위해 시점 정보를 명시적으로 기술자에 통합한 것이다. 이는 FPFH의 기하학적 표현력은 유지하면서, 센서(카메라)의 위치에 대한 객체의 상대적인 방향을 인코딩하는 새로운 구성 요소를 추가함으로써 달성되었다.2 이 설계 철학은 단순한 기능 확장을 넘어, 기술자의 목표를 ’정합’에서 ’자세 추정을 포함한 인식’으로 전환하는 근본적인 변화를 의미한다. 이러한 의도적인 설계는 VFH가 두 가지 주요 구성 요소, 즉 객체의 고유한 형상을 담는 ’확장 FPFH’와 외부적인 방향성을 담는 ’시점 방향’으로 구성되는 이유를 설명해준다. 또한, 이 설계는 VFH가 대칭적인 객체에 대해 서로 다른 자세임에도 불구하고 동일한 기술자를 생성할 수 있는 근본적인 한계의 원인이 되기도 한다.10
3. VFH의 수학적 원리 및 계산 절차
VFH 기술자의 계산은 입력된 포인트 클러스터로부터 단 하나의 308차원 부동소수점 배열을 생성하는 과정으로, 크게 세 단계로 나눌 수 있다. 이 과정의 전제 조건은 입력 포인트 클러스터 P = {p_1,..., p_n}의 모든 점 pi에 대해 법선 벡터 ni가 계산되어 있어야 한다는 것이다.5
3.1 1단계: 중심점 및 평균 법선 계산
VFH 계산의 첫 단계이자 가장 중요한 기준점을 설정하는 과정은 클러스터의 기하학적 중심점(centroid) pc와 평균 법선(average normal) nc를 계산하는 것이다.5 이 두 값은 이후 모든 계산의 기준이 되며, VFH가 클러스터 전체의 정보를 단일 기준점에 의존하여 요약하는 전역 기술자임을 보여준다.
- 중심점 pc: 클러스터에 속한 모든 점들의 좌표 평균으로 계산된다.
p_c = \frac{1}{n} \sum_{i=1}^{n} p_i
평균 법선 nc: 클러스터에 속한 모든 점들의 법선 벡터 ni의 평균으로 계산된다.
n_c = \frac{1}{n} \sum_{i=1}^{n} n_i
(Source: 12)
3.2 2단계: VFH의 두 가지 구성 요소 계산
VFH 기술자는 크게 두 가지 구성 요소의 조합으로 이루어진다: 객체의 표면 형상을 나타내는 ’확장 FPFH 구성 요소’와 객체의 자세를 나타내는 ’시점 방향 구성 요소’이다.2
3.2.1 확장 FPFH 구성 요소 (Extended FPFH Component)
이 구성 요소는 객체 표면의 전반적인 형태를 인코딩한다. FPFH와 유사하게 세 가지 각도 특징을 사용하지만, 계산 방식에 중요한 차이가 있다. FPFH가 각 점과 그 이웃 점들 간의 관계를 계산하는 반면, 확장 FPFH는 클러스터의 중심점 pc와 클러스터 내의 다른 모든 점 pi 간의 관계를 계산한다.2
이를 위해 먼저 중심점 pc에 Darboux 좌표계 (u, v, w)를 설정한다. 이 좌표계는 평균 법선 nc를 주축으로 하여 안정적인 기준틀을 제공한다.
-
중심점 pc에서의 지역 좌표계 (u,v,w):
\begin{cases} u = n_c \\ v = (p_i - p_c) \times u \\ w = u \times v \end{cases}
이 좌표계를 기준으로, 각 점 pi와 그 법선 ni에 대해 다음과 같은 4개의 특징값 (\alpha, \phi, \theta, d)를 계산한다.12 -
4가지 특징값:
\begin{cases} \alpha = \arccos(v \cdot n_i) \\ \phi = \arccos\left(u \cdot \frac{p_i - p_c}{\|p_i - p_c\|}\right) \\ \theta = \arctan2(w \cdot n_i, u \cdot n_i) \\ d = \|p_i - p_c\| \end{cases}
여기서 α,ϕ,θ는 각각 FPFH의 pan, tilt, yaw 각도와 유사한 역할을 하며, d는 중심점으로부터의 유클리드 거리이다. 이 방식은 모든 점을 중심점의 이웃으로 간주함으로써 FPFH의 계산 복잡도 O(nk2) 또는 FPFH의 O(nk)를 O(n)으로 크게 줄여 VFH의 계산 효율성에 결정적으로 기여한다.3
3.2.2 시점 방향 구성 요소 (Viewpoint Direction Component)
이 구성 요소는 객체의 자세, 즉 카메라에 대한 상대적인 방향을 인코딩하는 역할을 한다. 계산 과정은 다음과 같다.
- 카메라의 위치(시점, vp)에서 클러스터의 중심점 pc를 향하는 벡터 \vec{v_{dir}}를 계산하고 정규화한다.
- 이 정규화된 시점 방향 벡터와 클러스터 내 모든 점 pi의 법선 ni 사이의 각도 β를 계산한다.2
- 시점 각도 β:
\beta = \arccos\left(n_i \cdot \frac{p_c - v_p}{\|p_c - v_p\|}\right)
(Source: 12)
여기서 중요한 점은 스케일 불변성을 유지하기 위해 시점에서 각 개별 법선으로의 각도를 직접 사용하지 않는다는 것이다. 대신, 중심점을 향하는 단일 시점 방향 벡터를 각 법선의 위치로 평행 이동시킨 후 각도를 계산한다. 이 접근법 덕분에 VFH는 객체의 크기나 카메라로부터의 거리에 관계없이 객체의 자세를 일관되게 표현할 수 있다.2
3.3 3단계: 최종 히스토그램 생성
마지막 단계는 위에서 계산된 특징값들을 히스토그램으로 만드는 과정이다. 확장 FPFH 구성 요소의 4개 특징값(\alpha, \phi, \theta, d)과 시점 방향 구성 요소의 각도 β, 총 5개의 값 분포가 각각의 히스토그램 빈(bin)에 누적된 후, 이들이 모두 연결(concatenate)되어 최종적인 VFH 서명을 형성한다.2
Point Cloud Library(PCL)의 기본 구현에 따르면, 최종 히스토그램은 다음과 같이 구성된다.2
- 확장 FPFH의 α,ϕ,θ 각각에 45개의 빈
- 중심점까지의 거리 d에 45개의 빈
- 시점 구성 요소 β에 128개의 빈
이를 모두 합하면 총 45×4+128=308차원의 부동소수점 배열이 생성되며, 이는 PCL에서 pcl::VFHSignature308이라는 특정 자료구조에 저장된다.2
마지막으로, 생성된 히스토그램은 클러스터의 총 포인트 수로 정규화된다. 이 정규화 과정은 VFH 기술자가 객체의 크기 변화에 강인한, 즉 **스케일 불변성(scale invariance)**을 갖도록 만드는 핵심적인 단계이다.13
4. VFH의 성능 특성 심층 분석
VFH는 그 설계 철학에 따라 명확한 강점과 그에 따른 본질적인 한계를 동시에 지닌다. 이를 이해하는 것은 VFH를 실제 응용에 효과적으로 사용하기 위한 필수 조건이다.
4.1 강점
- 스케일 불변성 (Scale Invariance): VFH의 가장 큰 장점 중 하나는 스케일 불변성이다. 최종 히스토그램을 클러스터의 총 포인트 수로 정규화하기 때문에, 객체의 절대적인 크기나 센서로부터의 거리가 변하더라도 유사한 기술자 값을 유지한다.13 이는 데이터베이스에 저장된 모델과 다른 크기의 객체를 인식해야 하는 시나리오에서 매우 유용하다.
- 계산 효율성 (Computational Efficiency): VFH는 전체 포인트 클러스터에 대해 단 하나의 기술자만을 계산한다. 이는 PFH나 FPFH처럼 클러스터 내 모든 점 또는 주요점(keypoint)에 대해 기술자를 계산해야 하는 지역 기술자 방식에 비해 훨씬 빠르다.2 또한, 확장 FPFH 구성 요소의 계산 복잡도가 O(n)으로 최적화되어 있어, 실시간 로봇 응용에 적합한 계산 속도를 제공한다.3
- 인식과 자세 추정의 동시성 (Simultaneous Recognition and Pose Estimation): VFH 서명 하나에 객체의 형상 정보(확장 FPFH)와 자세 정보(시점 방향)가 모두 포함되어 있다. 따라서, 데이터베이스 검색을 통해 성공적으로 매칭이 이루어지면, 객체의 종류를 식별하는 것과 동시에 6DOF 자세를 추정할 수 있다.3 이는 인식과 자세 추정을 별도의 단계로 처리하는 다른 파이프라인에 비해 과정을 단순화하고 효율성을 높인다.
4.2 약점 및 한계
- 가려짐(Occlusion) 및 잡음(Clutter)에 대한 민감성: VFH의 가장 치명적인 약점은 가려짐과 잡음에 매우 취약하다는 점이다. VFH의 모든 계산은 단 하나의 기준점, 즉 클러스터의 **중심점(pc)**에 강하게 고정되어 있다. 만약 객체의 일부가 다른 물체에 의해 가려지거나(occlusion), 배경 분할이 불완전하여 잡음이 섞이면 상당수의 포인트가 누락되거나 추가된다. 이 경우, 남아있는 포인트들로 계산된 중심점은 원래 객체의 완전한 형태일 때의 중심점과 크게 다른 위치에 놓이게 된다.5
중심점의 이러한 불안정성은 VFH 기술자 전체를 무효화시키는 연쇄 효과를 일으킨다. 확장 FPFH 구성 요소는 잘못된 중심점을 기준으로 모든 점과의 기하학적 관계를 계산하게 되고, 시점 방향 구성 요소 역시 카메라와 잘못된 중심점을 잇는 벡터를 기준으로 각도를 계산하게 된다. 결과적으로 생성된 308차원의 벡터는 데이터베이스에 저장된 올바른 기술자와 아무런 유사성을 갖지 않게 되어 매칭에 치명적인 실패를 초래한다. 이처럼 단일 기준점(중심점)의 안정성에 극도로 의존하는 VFH의 설계는 복잡하고 가려짐이 많은 실제 환경에서 성능 저하의 주된 원인이 되며, 이 문제를 해결하기 위해 CVFH와 같은 후속 기술자들이 개발되는 직접적인 동기가 되었다.
- 대칭적 객체에 대한 모호성 (Ambiguity with Symmetric Objects): VFH는 객체가 관찰 시점에 대해 대칭적인 구조를 가질 때, 서로 다른 자세임에도 불구하고 매우 유사하거나 심지어 동일한 서명을 생성하는 문제를 가진다.10 예를 들어, 완벽한 원기둥을 정면에서 바라볼 때, 원기둥이 축을 중심으로 180도 회전하더라도 시점 벡터와 표면 법선들 간의 각도 분포는 동일하게 유지된다. 이로 인해 VFH는 해당 객체가 원기둥이라는 사실은 정확히 인식할 수 있지만, 두 가지 대칭적인 자세 중 어느 것이 실제 자세인지를 구분하지 못하는 모호성을 갖게 된다.12
5. 주요 3D 기술자와의 비교
VFH의 특성을 더 명확히 이해하기 위해, 다른 주요 3D 기술자들과의 비교는 필수적이다. 특히 FPFH, SHOT과의 비교를 통해 VFH의 상대적인 위치와 장단점을 파악할 수 있다.
5.1 VFH vs. FPFH
VFH는 FPFH에서 파생되었지만, 그 목적과 작동 방식에서 근본적인 차이를 보인다.
- 기술자 유형 및 개수: FPFH는 각 점의 지역적(local) 형상을 기술하는 지역 기술자이다. 따라서 포인트 클라우드 내의 점 개수(또는 선택된 주요점 개수)만큼의 기술자가 생성된다. 반면, VFH는 클러스터 전체를 하나의 단위로 기술하는 전역 기술자이며, 클러스터당 단 하나의 기술자만 생성된다.2
- 불변성: FPFH는 시점 불변성(viewpoint invariant)을 가지므로 객체의 자세를 구분할 수 없다. 이는 주로 정합(registration)에 유리한 특성이다. VFH는 의도적으로 시점 정보를 포함하여 **시점 의존적(viewpoint dependent)**이며, 이를 통해 자세 추정이 가능하다.3
- 주요 용도: FPFH는 주로 두 포인트 클라우드 간의 대응점을 찾아 정렬하는 데 사용되는 반면, VFH는 데이터베이스에 저장된 모델과 비교하여 객체를 인식하고 그 자세를 찾는 데 사용된다.
5.2 VFH vs. SHOT
SHOT(Signatures of Histograms of OrienTations)은 FPFH/VFH와는 다른 접근법을 사용하는 강력한 지역 기술자이다.
- 기준틀 설정: VFH는 클러스터 전체의 중심점을 단일 기준점으로 사용한다. 반면, SHOT은 각 주요점마다 고유한 지역 좌표계(Local Reference Frame, LRF)를 설정한다. 이 LRF는 주변 점들의 분포를 분석하여 결정되므로, 중심점에 의존하는 VFH보다 가려짐과 잡음에 더 강인하다.17
- 기술자 유형: VFH는 전역 기술자이고, SHOT은 지역 기술자이다. 이는 인식 파이프라인의 구조적 차이로 이어진다. VFH는 전역 매칭을 통해 빠르게 후보를 찾지만, SHOT은 다수의 지역 특징점들을 매칭하고 기하학적 일관성 검증(예: RANSAC)을 통해 객체를 인식하는 과정을 거친다.
- 강인성: 일반적으로 SHOT은 VFH보다 노이즈, 점 밀도 변화, 그리고 부분적인 가려짐에 대해 더 높은 강인성을 보인다. VFH는 계산 속도에서 이점을 가질 수 있으나, 이는 객체가 잘 분리된 이상적인 환경에서 두드러진다.20
5.3 비교 요약표
다음 표는 주요 3D 기술자들의 특성을 요약하여 비교한 것이다. 이 표는 특정 작업에 어떤 기술자가 더 적합한지 판단하는 데 도움을 줄 수 있다.
표 1: 3D 특징 기술자 비교
| 특징 | 유형 | 불변성 | 강인성 (가려짐) | 핵심 특징 | 주요 사용 사례 |
|---|---|---|---|---|---|
| FPFH | 지역 | 회전, 시점 | 낮음 | 점 주변의 지역적 표면 곡률 기술 | 포인트 클라우드 정합, 표면 매칭 |
| VFH | 전역 | 스케일 | 낮음 | 단일 중심점 기준 전역 형상 및 시점 인코딩 | 분리된 객체의 빠른 인식 및 자세 추정 |
| CVFH | 준-전역 | 스케일(선택적) | 중간 | 가려짐 대응을 위해 안정적인 하위 클러스터에서 VFH 유사 특징 계산 | 부분적으로 가려진 객체 인식 |
| SHOT | 지역 | 회전 | 중간-높음 | 고유한 지역 좌표계(LRF)와 공간 분할 사용 | 강인한 특징 매칭, 복잡한 환경에서의 객체 인식 |
(Sources for table data: 2)
6. VFH의 진화: 가려짐 문제 해결을 위한 CVFH와 OUR-CVFH
VFH의 가장 큰 약점인 가려짐에 대한 취약성은 실제 산업 현장이나 가정 환경과 같이 복잡한 장면에서는 심각한 성능 저하를 야기했다. 이 문제를 해결하기 위해 VFH를 기반으로 한 여러 개선된 기술자들이 제안되었으며, 그중 가장 대표적인 것이 CVFH와 OUR-CVFH이다.
6.1 CVFH (Clustered Viewpoint Feature Histogram)
CVFH는 VFH의 ‘중심점의 저주(Curse of the Centroid)’ 문제를 직접적으로 해결하기 위해 설계되었다.5
- 핵심 아이디어: 전체 클러스터에 대해 단 하나의 VFH를 계산하는 대신, CVFH는 다른 접근법을 취한다. 먼저, 입력된 객체 클러스터의 표면을 법선 벡터의 방향과 점들 간의 거리 등 지역적 일관성을 기준으로 여러 개의 안정적인 영역(stable regions)으로 분할한다. 그 후, 각 안정적인 하위 클러스터에 대해 독립적으로 VFH와 유사한 기술자를 계산한다.5
- 가려짐에 대한 강인성: 이 접근법은 객체의 일부가 가려지더라도 큰 이점을 제공한다. 가려지지 않고 보이는 부분에 해당하는 안정적인 클러스터들은 여전히 올바른 기술자를 생성할 수 있기 때문이다. 따라서, 학습된 모델의 일부와 일치하는 패치(patch)만 있다면 객체 인식이 가능하다. 이는 단일 중심점의 불안정성으로 인해 전체 기술자가 망가지는 VFH의 문제를 효과적으로 완화한다.22
- 형상 분포 구성 요소 (Shape Distribution Component, SDC): CVFH는 VFH의 두 구성 요소에 더해 SDC라는 새로운 요소를 도입했다. SDC는 각 하위 클러스터의 중심점과 해당 클러스터에 속한 점들 사이의 거리 분포를 히스토그램으로 만든다. 이는 동일한 크기와 법선 분포를 갖지만 점들의 공간적 분포가 다른 객체(예: 속이 찬 구와 속이 빈 구 껍질)를 구별하는 능력을 향상시키는 역할을 한다.5
- 스케일 불변성과의 트레이드오프: CVFH는 VFH의 히스토그램 정규화 단계를 의도적으로 제거하여 스케일 의존적으로 만들 수 있다. 이 경우, 객체의 크기 정보가 기술자에 포함되어 가려짐에 대한 강인성을 더욱 높이는 효과를 가져온다. 하지만 이는 다른 크기의 동일한 객체는 매칭되지 않음을 의미하므로, 적용 분야에 따라 선택해야 하는 트레이드오프 관계이다.13
6.2 OUR-CVFH (Oriented, Unique and Repeatable CVFH)
OUR-CVFH는 CVFH를 한 단계 더 발전시켜, 카메라의 회전(roll) 각도 변화에 대한 모호성을 제거하고 더욱 신뢰성 있는 자세 추정을 목표로 한다.17
- 핵심 아이디어: CVFH가 각 하위 클러스터에 대해 기술자를 계산하는 것에서 더 나아가, OUR-CVFH는 각 클러스터에 대해 방향성이 있고(Oriented), 고유하며(Unique), 반복 가능한(Repeatable) 좌표계(Semi-Global Unique Reference Frame, SGURF)를 설정한다. 이 고유하고 안정적인 좌표계를 기준으로 기술자를 계산함으로써, 뷰의 회전에도 불구하고 항상 일관된 기술자를 얻을 수 있다.21
- 성능 향상: 이 고유 좌표계의 도입은 CVFH의 모호성을 해결하여 인식 파이프라인의 정확성과 신뢰성을 크게 향상시킨다. 특히, 여러 객체가 섞여 있는 복잡한 장면에서 오인식률을 줄이고 정확한 6DOF 자세를 추정하는 데 기여한다.26 OUR-CVFH는 VFH에서 시작된 ’전역 기술자를 통한 빠른 인식’이라는 아이디어를 실제 환경의 복잡성에 대응할 수 있도록 진화시킨 결과물이라 할 수 있다.
7. PCL을 활용한 VFH의 실제 적용
VFH의 개념과 이론을 실제 코드에 적용하는 데 있어 Point Cloud Library(PCL)는 필수적인 도구이다. PCL은 VFH 계산부터 검색, 시각화에 이르는 전체 파이프라인을 구축하는 데 필요한 모듈들을 제공한다.
7.1 VFH 기반 인식 파이프라인
VFH를 사용한 객체 인식 시스템은 일반적으로 **학습(Training)**과 **테스트(Testing)**의 두 단계로 구성된다.1
7.1.1 학습 단계 (Training Stage)
이 단계의 목표는 인식하고자 하는 객체 모델들의 VFH 서명 데이터베이스를 구축하는 것이다.
-
데이터 수집: 인식할 객체를 회전판(turntable)과 같은 장비 위에 놓고 여러 각도에서 촬영하여 다양한 뷰(view)의 포인트 클라우드를 수집한다. 이는 객체의 여러 자세에 대한 VFH 서명을 확보하기 위함이다.1
-
VFH 계산: 수집된 각 뷰(포인트 클러스터)에 대해 VFH 기술자를 계산한다. PCL에서는
pcl::VFHEstimation클래스를 사용하여pcl::VFHSignature308타입의 기술자를 생성할 수 있다.1 -
데이터베이스 구축: 계산된 모든 VFH 기술자(308차원 벡터)와 해당 기술자가 어떤 객체의 어떤 뷰에서 나왔는지를 식별할 수 있는 정보(예: 파일명, 포즈 정보)를 쌍으로 묶어 저장한다.29 이 데이터는 보통
.pcd 파일 형식으로 관리된다.
- 검색 구조 생성: 대량의 VFH 서명들로부터 빠르게 유사한 서명을 찾기 위해, 데이터베이스를
kd-tree와 같은 효율적인 검색 구조로 구성한다. PCL에서는 주로 FLANN(Fast Library for Approximate Nearest Neighbors) 라이브러리를 연동하여 이 작업을 수행한다. VFH 데이터는flann::Matrix형태로 변환된 후,flann::Index를 사용하여 kd-tree를 구축하고 디스크에 저장한다.1
7.1.2 테스트 단계 (Testing Stage)
이 단계에서는 새로운 장면에서 객체를 인식하고 자세를 추정한다.
- 장면 분할: 입력된 새로운 장면(scene)의 포인트 클라우드에서 평면 제거, 유클리디안 클러스터링 등의 기법을 사용하여 객체로 추정되는 개별 포인트 클러스터들을 분할한다.1
- VFH 계산: 분할된 각 클러스터에 대해 현재 카메라 시점을 기준으로 VFH 기술자를 계산한다.29
- 최근접 이웃 검색 (Nearest Neighbor Search): 계산된 VFH 기술자를 쿼리(query)로 사용하여, 학습 단계에서 구축한 kd-tree에서 가장 유사한 k개의 VFH 기술자를 검색한다 (
nearestKSearch). VFH와 같은 히스토그램 비교에는 유클리드 거리보다 카이제곱 거리(ChiSquareDistance)가 더 효과적인 것으로 알려져 있다.29 - 인식 및 자세 추정: 검색된 가장 가까운 기술자와의 거리가 사전에 설정된 임계값(threshold)보다 낮으면, 해당 클러스터는 검색된 기술자에 해당하는 객체로 인식된다. 이때 데이터베이스에 함께 저장된 모델의 포즈 정보를 이용해 장면에 있는 객체의 초기 6DOF 자세를 추정할 수 있다.29
7.2 PCL 생태계와 VFH
-
파일 형식: VFH 기술자는 PCL의 표준 파일 형식인
.pcd(Point Cloud Data)로 저장 및 로드된다..pcd파일 헤더의FIELDS와COUNT속성은 VFH의 308개 요소를 하나의 ’포인트’로 취급할 수 있게 하여 데이터 관리를 용이하게 한다.30 -
시각화: PCL의 시각화 라이브러리(
pcl_visualization)는PCLHistogramVisualizer라는 특화된 클래스를 제공한다. 이 클래스는VFHSignature308과 같은 히스토그램 기반 기술자를 막대그래프 형태로 시각화하여 사용자가 기술자의 분포를 직관적으로 확인할 수 있게 돕는다.2 -
선행 모듈: VFH를 효과적으로 사용하기 위해서는 PCL의 다른 핵심 모듈들에 대한 이해가 필수적이다. 여기에는 포인트 클라우드 기본 자료구조(
pcl::PointCloud) 32, 표면 법선 추정(
pcl::NormalEstimation) 13, 점군 분할(segmentation), 그리고 kd-tree를 이용한 검색(
pcl::search::KdTree) 30 등이 포함된다.
8. 결론
VFH(Viewpoint Feature Histogram)는 3D 객체 인식 및 자세 추정 분야에서 FPFH의 한계를 극복하고 새로운 가능성을 제시한 중요한 기술자이다. 객체의 기하학적 형상과 시점 정보를 단일 전역 서명으로 통합함으로써, 분리된 객체에 대한 신속한 인식과 6DOF 자세 추정을 동시에 달성하는 계산 효율적인 프레임워크를 제공했다. 특히 스케일 불변성을 내재하고 있어 다양한 환경에서의 적용 가능성을 높였다.
그러나 VFH의 설계는 ’중심점’이라는 단일 기준점에 과도하게 의존하는 본질적인 한계를 안고 있다. 이로 인해 가려짐이나 불완전한 분할이 존재하는 실제 환경에서는 중심점의 위치가 불안정해져 기술자의 신뢰성이 급격히 저하되는 치명적인 약점을 보였다. 또한, 대칭적 객체에 대한 자세 모호성 문제도 해결해야 할 과제로 남았다.
이러한 VFH의 한계는 역설적으로 3D 기술자 연구의 발전을 촉진하는 계기가 되었다. VFH의 약점을 보완하기 위해 제안된 CVFH는 안정적인 하위 클러스터 개념을 도입하여 가려짐에 대한 강인성을 크게 향상시켰고, OUR-CVFH는 고유한 지역 좌표계를 통해 자세 추정의 정확성과 신뢰성을 한 단계 더 끌어올렸다.
결론적으로, VFH는 그 자체로 완벽한 해결책이라기보다는, 특정 조건(잘 분리된 객체, 적은 가려짐) 하에서 매우 효율적인 도구이며, 더 중요하게는 후속 기술자들이 해결해야 할 명확한 문제점을 제시한 ’진화의 발판’으로서 그 학문적, 기술적 가치가 크다고 할 수 있다. 따라서 VFH를 이해하는 것은 단순히 하나의 알고리즘을 배우는 것을 넘어, 3D 객체 인식 기술이 직면한 도전과제와 그 해결을 위한 아이디어의 발전 과정을 이해하는 것과 같다.